1. Field of the Invention
The present invention relates to digital memory devices, and more particularly to nonvolatile memory devices that may be authenticated, and methods of operation and manufacture thereof.
2. Description of Related Art
Nonvolatile memory generally, and especially flash memory of all types including NOR and NAND memory types, have become increasingly popular due to their significant cost advantage. Flash memory is now available in a variety of different interfaces, ranging from traditional NAND interfaces to low pin count serial NAND interfaces, and Serial Peripheral Interfaces (“SPI”) including single, dual and quad SPI, and Quad Peripheral Interface (“QPI”). An example of one such successful serial flash memory device is SPIFLASH (®) product number W25Q128FV available from Winbond Electronics Corporation of San Jose, Calif., USA; see Winbond Electronics Corporation, Datasheet: SpiFlash 3V 128M-Bit Serial Flash Memory with Dual/Quad SPI & QPI, Revision D, Oct. 1, 2012.
Nonvolatile memory is used extensively in today's digital electronic equipment including personal computer systems and workstations; mobile communications devices including cell phones, smartphones, phablets, and tablets; entertainment systems such as MP3 players and gaming devices; medical device controllers; and cloud systems. The security of information stored on this nonvolatile memory is a concern throughout the computer industry. Addressing the security vulnerabilities of such digital electronic equipment is an integral part of maintaining an operational industry.
The nonvolatile memory used in much of this digital electronic equipment is packaged apart from the processor (microprocessor or controller) which runs the computer code and accesses digital data stored in the nonvolatile memory. This separate packaging presents security vulnerabilities. With reference to FIG. 1, the code and/or data may be maliciously accessed and/or modified in a number of ways, such as, for example, tapping into one or more lines 14 such as data in “DI” and data out “DO” between a system controller 10 and a nonvolatile memory device 12, connecting a probe directly to one or more pins extending from the packaged nonvolatile memory device 12, forcibly reading and perhaps modifying the contents of the packaged nonvolatile memory device 12 while installed in the digital electronic equipment, and physically removing the nonvolatile memory device 12 from the digital electronic equipment to read and perhaps modify the contents.
Nonvolatile memory devices are commonly used to store executable code for all types of applications, including set top boxes, mobile phones, personal computers, modems, and so forth, along with multiple different applications. One type of code commonly stored on nonvolatile memory devices, and in particular on flash memory devices for personal computers, is commonly known as the Basic Input/Output System (“BIOS”) code. The BIOS code facilitates the hardware initialization process and transition control to the operating system. Unauthorized modification of BIOS by malicious act constitutes a significant threat because of the BIOS's unique and privileged position within the system architecture. BIOS security is addressed in David Cooper et al., BIOS Protection Guidelines: Special Publication 800-147, National Institute of Standards and Technology (“NIST”), April 2011.
FIG. 2 shows an example of a subsystem 20 to prevent unauthorized modification of BIOS program code embedded in modifiable nonvolatile memory devices such as flash memory, which is further disclosed in U.S. Pat. No. 5,844,986 issued Dec. 1, 1998 to Davis. A cryptographic coprocessor 25 resides on system bus 24, along with host processor 21 and system memory 23 via a chipset (interface) 22. The cryptographic coprocessor 25 includes a bus interface 26, a processing unit 27, and a nonvolatile memory 28 which contains the BIOS program code 29, and performs authentication and validation on a BIOS upgrade based on a public/private key protocol. The authentication is performed by verifying the digital signature embedded in the BIOS upgrade. Although the host processor 21 is shown separate from the cryptographic coprocessor 25, the cryptographic coprocessor 25 may be part of the host processor 21. In this case, the host processor 21 accesses the BIOS program code 29 directly without going through the system bus 24.
While the security engine which performs the cryptographic processing and the nonvolatile memory which stores the program code and/or data to be secured may be separate and discrete devices, it is also possible to implement nonvolatile memory such as serial flash memory as well as the security engine as a single integrated circuit on one substrate.